/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Administracion;

import Porsentaje.PorsentajeGUI;
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author nan
 */
public class AdministracionMediador implements ActionListener{

    private Devolucion.MedDevolucion devolver;
    private Devolucion.devolucionListar usaDev;
    private Porsentaje.medPorsentaje porsentaje;
    private Conexion.ConexionBD conectar = new Conexion.ConexionBD();
    private administracionGUI ventana = new administracionGUI();
    private String nombreUser;
    private ConsultaPrecio.MedConsultaPrecio consult;
    private Articulo.articulosListar artlis;
    private Personas.personaListar perlis;
    private Ventas.MedVenta vetaNueva;
    private Ventas.medVentasListar adminVentas;
    private DefaultTableModel dtmArticulos;
    private Ventas.medVentasListar ventaLis;
    private Gastos.gastosListar gasto;

    public AdministracionMediador(String nombreuser,String tipo){
        ventana.setLocationRelativeTo(null);
        this.nombreUser = nombreuser;
        ventana.setActionListeners(this);
        ventana.setVisible(true);
        ActualizarConStocMin();
        if(tipo.matches("Usuario")){
            ventana.getjButtonArticulos().setEnabled(false);
            ventana.getjButtonConsultaVentas().setEnabled(false);
            ventana.getjButtonPersonas().setEnabled(false);
            ventana.getjButtonPorsentaje().setEnabled(false);
        }
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == ventana.getjButtonConsultaPrecio()){
            if (this.consult == null){
                consult = new ConsultaPrecio.MedConsultaPrecio();
            } else {
                consult.setVisible(true);
            }
        }
        if (e.getSource() == ventana.getjButtonArticulos()){
            if (this.artlis == null){
                artlis = new Articulo.articulosListar(this);
            } else {
                artlis.setVisible(true);
            }
        }
        if (e.getSource() == ventana.getjButtonPersonas()){
            if (this.perlis == null){
                perlis = new Personas.personaListar();
            } else {
                perlis.setVisible(true);
            }
        }
        if (e.getSource()==ventana.getjButtonVentas()){
            if (this.vetaNueva == null){
                vetaNueva = new Ventas.MedVenta(nombreUser,this);
            } else {
                vetaNueva.setVisible(true);
            }
        }
        if (e.getSource()==ventana.getjButtonConsultaVentas()){
            if (this.adminVentas == null){
                adminVentas = new Ventas.medVentasListar();
            } else {
                adminVentas.setVisible(true);
            }
        }
        if (e.getSource()==ventana.getjButtonConsultaVtaDiaria()){
            if (this.ventaLis == null){
                ventaLis = new Ventas.medVentasListar();
                ventaLis.getVentaListar().getjButtonEliminar().setEnabled(false);
                ventaLis.getVentaListar().getjButtonMostrarTodos().setEnabled(false);
                ventaLis.getVentaListar().getjButtonMostrarFecha().setEnabled(false);
                try {
                    ventaLis.actualizarPorFecha(Date.class.newInstance().toLocaleString(), Date.class.newInstance().toLocaleString());
                } catch (InstantiationException ex) {
                    Logger.getLogger(AdministracionMediador.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IllegalAccessException ex) {
                    Logger.getLogger(AdministracionMediador.class.getName()).log(Level.SEVERE, null, ex);
                }
            } else {
                ventaLis.setVisible(true);
                ventaLis.getVentaListar().getjButtonEliminar().setEnabled(false);
                ventaLis.getVentaListar().getjButtonMostrarTodos().setEnabled(false);
                ventaLis.getVentaListar().getjButtonMostrarFecha().setEnabled(false);
                try {
                    ventaLis.actualizarPorFecha(Date.class.newInstance().toLocaleString(), Date.class.newInstance().toLocaleString());
                } catch (InstantiationException ex) {
                    Logger.getLogger(AdministracionMediador.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IllegalAccessException ex) {
                    Logger.getLogger(AdministracionMediador.class.getName()).log(Level.SEVERE, null, ex);
                }
            }    
        }
        if (e.getSource() == ventana.getjButtonPorsentaje()){
                if (this.porsentaje == null){
                    porsentaje = new Porsentaje.medPorsentaje();
                } else {
                    porsentaje.setVisible(true);
            }
        }
        if(e.getSource()==ventana.getjButtonDevolucion()){
            if (this.devolver == null){
                    devolver = new Devolucion.MedDevolucion(nombreUser,this);
                } else {
                    devolver.setVisible(true);
            }
        }
        if (e.getSource() == ventana.getjButtonDevListar()){
            if (this.usaDev == null){
                    usaDev = new Devolucion.devolucionListar();
                } else {
                    usaDev.setVisible(true);
            }
        }
        if (e.getSource() == ventana.getjButtonGasto()){
            if (this.gasto == null){
                    gasto = new Gastos.gastosListar();
                } else {
                    gasto.setVisible(true);
            }
        }
        //-----------------Salir-----------------------------
        if (e.getSource() == ventana.getjButtonSalir()){
            ventana.dispose();
        }        
    }

    public void ActualizarConStocMin() {
        String[] titulos = {"Nombre", "Marca", "Descrip", "Stock Min", "Stock Max", "Stock"};
        Object[][] datos = {};
        dtmArticulos = new DefaultTableModel(datos, titulos);

        conectar.conectar();
        Statement st;
        try {
            st = conectar.getConn().createStatement();
            String consulta = "SELECT * FROM \"Articulo\" WHERE \"Stock\" <= \"StockMin\"";
            ResultSet rs = st.executeQuery(consulta);
            String id = null;
            while (rs.next()){
                Object[] fila = {
                rs.getString("nombre"),
                rs.getString("marca"),
                rs.getString("descripcion"),
                rs.getInt("StockMin"),
                rs.getInt("StockMax"),
                rs.getInt("Stock")};
                dtmArticulos.addRow(fila);
            }
        } catch (Exception e){
            e.printStackTrace();
        }
        ventana.getjTableArticuloMin().setModel(dtmArticulos);

    }

}
